System and method for priority based application server updates

ABSTRACT

The invention provides a system and method for updating applications without the need to interrupt server operation. The system may include an update deployer that functions as a main execution engine and is responsible for coordinating updates with an application server.

FIELD OF THE INVENTION

[0001] This invention is a system and method for updating applicationson a running application server without requiring a server restart.

BACKGROUND OF THE INVENTION

[0002] As used herein, the term application is used to refer to a set offiles that are useable in a processor based environment. In a networkenvironment, an environment of a several processors in communicationwith one another, it is often difficult and inconvenient to update anapplication.

[0003] Typically, the process to update an application entails at leastthree steps: first, the network file server must be shut down, second,the application files are updated, and finally, the server must berestarted. One drawback this typical process is that for the period oftime it takes to update the application, the server, and all otherapplications that reside on the server, are inaccessible to networkclients.

[0004] Another drawback of existing application update mechanisms isthat they often must be scheduled to occur at inconvenient times fornetwork administrators. Because they entail a service interruption, mostapplication updates are scheduled to take place at off peak hours (e.g.,after midnight). This can be inconvenient and stressful for thepersonnel responsible for administering the updates.

[0005] Another drawback of existing application update mechanisms isthat they require personnel to oversee the update. For example, anadministrator must be present to shut down the server, ensure that theappropriate files are updated and restart the server.

[0006] Other drawbacks of current application update systems also exist.

SUMMARY OF THE INVENTION

[0007] The present invention provides a system and method for updatingapplications without the need to interrupt server operation. The systemmay comprise an update deployer that functions as a main executionengine and is responsible for coordinating updates with an applicationserver.

[0008] One advantage of the present invention is that it enablesapplication updates with less server down time and a reduced amount ofadministrative work. According to some embodiments, a method forupdating an application server may comprise configuring the deployer andenabling it to update the files.

[0009] These and other features and advantages of the invention will beapparent through the detailed description of the preferred embodimentsand the drawings attached hereto. It is also to be understood that boththe foregoing general description and the following detailed descriptionare exemplary and not restrictive of the scope of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

[0010]FIG. 1 is a schematic representation of the overall system 100according to some embodiments of the invention.

[0011]FIG. 2 is a schematic flow diagram illustrating a method ofupdating an application according to some embodiments of the invention.

DETAILED DESCRIPTION OF THE DRAWING FIGURES

[0012]FIG. 1 is a schematic representation of the overall system 100according to some embodiments of the invention. The system may comprisea deployer 110 that functions as an execution agent as described herein.Deployer 110 may comprise a software module or other suitable processorreadable agent that enables a processor to carry out the relatedfunctions.

[0013] Deployer 110 may communicate with other portions of system 100via communication path 160. Communication path 160 may comprise anysuitable signal carrying path. For example, communication path 160 maycomprise a hard wired (e.g., cable) connection, a wireless (e.g., radio,satellite, cellular) connection, or some other suitable signal carryingpath.

[0014] In some embodiments, Deployer 110 may communicate with aduplicate storage system or mirror 112. Mirror 112 may be a separatedevice (e.g., an additional server), in a separate location, or maycomprise some other typical mirror server configuration.

[0015] System 100 may comprise at least one file server, such asapplication server 120. Application server 120 may comprise any suitableserver or other mechanism for supplying files or services. For example,application server 120 may comprise a Java™ to platform enterpriseedition (J2EE) web server, an IBM WebSphere™, BEA iPlanet™, IBM Domino™,or other suitable server.

[0016] Application server 120 may communicate (via a communication path160) with appropriate system devices. For example, application server120 may communicate with any number of storage devices 130 a, 130 n.Storage devices 130 a, 130 n may comprise databases or other filestorage mechanisms. While storage devices 130 a, 130 n are shown in FIG.1 as separate devices, the invention is not so limited. Storage devices130 a, 130 n may comprise a portion of application server 120, adistributed network of storage devices, stand-alone storage devices, orsome other storage arrangement.

[0017] Deployer 110, application server 120, mirror server 112, storagedevices 130 a, 130 n and other system devices may communicate (e.g., viacommunication paths 160) directly with one another or over network 140.Network 140 may comprise any suitable network arrangement. For example,network 140 may comprise a local area network (LAN), a wide area network(WAN), a wireless network, an intranet, an extranet, the Internet, orsome other suitable network configuration.

[0018] In addition, one or more client devices 150 a, 150 b, 150 n maycommunicate over network 140. For example, client devices 150 a, 150 b,150 n may enable access to applications services by application server120.

[0019]FIG. 2 is a schematic flow diagram illustrating a method ofupdating an application according to some embodiments of the invention.The method shown in FIG. 2 is but one example of the inventive method.Other arrangements of the steps listed in FIG. 2 are possible.

[0020] At some time prior to initiating an update to an application, anadministrator configures deployer 110 as shown in FIG. 2 at 200.Configuring deployer 110 may comprise any suitable method for settingpredetermined criteria dictating when and how application server 120should handle updates.

[0021] Any suitable criteria may be used to configure deployer 110. Forexample, criteria relating to the polling rate at which deployer 110checks for updates, priority levels for the updates, time of day todeploy updates, changes in priority level based upon time of day,changes in priority level based upon type of application, and othercriteria may be configured at step 200.

[0022] Configuration step 200 may also comprise setting a priority forwhich updates may occur. Priority may be established with any suitablelevel of granularity. For example, priority may be divided into high,medium and low priority levels. In addition, priority may be setaccording to application, time of day, number of users, number of activesessions, type of application, type of update (e.g., minimal orsignificant change), combinations of one or more of the foregoing, orother predetermined criteria.

[0023] In some embodiments, the configuration step 200 for deployer 110may persist as long as desired. In this manner, an administrator needonly perform configuration step 200 once if desired. Of course,configuration step 200 may also occur as often as desired.

[0024] When an update to an application is to occur, a developer or anadministrator may make the modifications to the relevant applicationfiles as indicated at 202. Modification may occur in any suitablemanner. For example, an application may be modified by modifying theapplication files in mirror server 112 or in application server 120storage space (e.g., storage device 130 a, 130 n).

[0025] Deployer 110 may be configured to automatically notice that anupdate is available. Deployer 110 may notice that updates are availableusing any suitable method. For example, deployer 110 may periodicallypoll the applications in mirror 112 or storage devices 130 a, 103 n, todetermine if file modification times have changed. Other schemes mayalso be used to determine when updates have occurred.

[0026] If deployer 110 configuration is so set, an update may initiateat 206 when deployer 110 sends a message to application server 120 torequest an update for the modified application. The message toapplication server 120 may also comprise an indication of the prioritylevel for the update.

[0027] Application server 120 examines the message and determines anappropriate response as indicated at 208. The response is a yes or nodetermination of whether to proceed with the update as indicated at 210and may be based upon the priority set in deployer 110 configurationfiles.

[0028] For embodiments where application server 120 response is basedupon update priority, any suitable predetermined response scheme may beimplemented. For example, application server 120 may respond to a highpriority message with a yes-proceed answer.

[0029] Medium priority update messages may receive a yes-proceed answerwhen certain criteria are satisfied. For example, a medium priorityupdate may proceed when no users (e.g., clients 150 a, 150 b, 150 n)have active sessions in the application. Other measures may also beimplemented to insure that medium priority updates eventually proceed.For example, once a medium priority update request is received,application server 120 may refuse to accept new user sessions for theapplication; active users may continue to use the application, but newusers are not allowed until the update is completed. Similarly,application server 120 may respond with a yes-proceed answer to lowpriority update messages when no active user sessions are present. Otherapplication server 120 response schemes may also be used.

[0030] Application server 120 response may be determined as indicated at210. If the determination at 210 is not to proceed, deployer 110 maycancel the update as indicated at 212. Deployer 110 may remember thefailure to proceed and periodically retry the update request, asindicated in FIG. 2, or may implement some other procedure as dictatedby deployer 110 configuration.

[0031] If the determination at 210 is to proceed, application theapplication or applications which are to be updated are adjusted asindicated at 214. Adjustment of the application or applications whichare to be updated may occur in any suitable fashion as dictated bydeployer 110 configuration. For example, as discussed above, proceedingwith a high priority updates may cause application server 120 to haltthe application; proceeding with medium priority updates may causeapplication server 120 to prevent new user sessions and halt theapplications when the in-use sessions terminate; proceeding with lowpriority updates may cause application server to wait until no activesessions are present and then halt the applications. Other adjustmentsare possible.

[0032] The application update is implemented at 216. Implementation ofthe update may be accomplished in any suitable manner. For example,updated files on mirror server 112 or in application storage space(e.g., storage devices 130 a, 130 n) may be copied onto applicationserver's 120 applications store. Other methods of implementing theupdate may also be used.

[0033] Deployer 110 may signal application server 120 to indicate thatthe update is complete as indicated at 218. Application server 120 maythen restart the updated application as indicated at 220.

[0034] Other embodiments, uses and advantages of the invention will beapparent to those skilled in the art from consideration of thespecification and practice of the invention disclosed herein. Thespecification should be considered exemplary only, and the scope of theinvention is accordingly intended to be limited only by the followingclaims.

What is claimed is:
 1. A system for enabling updates to applications ona running application server without requiring a server restart, thesystem comprising: an application server that services an applicationfor one or more clients; a deployer that coordinates an update to theapplication with the application server, the deployer furthercomprising: a configuration file that assigns a priority to the updateand pushes the update to the application sever based, at least in part,upon the assigned priority.
 2. The system of claim 1 further comprising:a duplicate application storage space that communicates with thedeployer, wherein the update to the application is first performed onthe duplicate application storage space.
 3. A method for updating anapplication on an application server wherein the update to theapplication is accomplished without the need for an application serverrestart, the method comprising: polling a storage location with adeployer to notice the presence of an update, and when an update isnoticed; signaling an application server that the update is present;determining a priority for the update; deciding whether to proceed withthe update based, at least in part on the priority for the update, andif the decision is to proceed; adjusting the application so that theupdate may proceed; updating the application; and signaling theapplication server when the update is complete.
 4. The method of claim 3wherein the step of determining a priority for the update furthercomprises: reading the priority assigned to the update by the deployer,wherein the assigned priority is based, at least in part, upon apredetermined configuration.
 5. A deployer that coordinates an update toan application running on an application server, the deployercomprising: a configuration file that assigns a priority to the updateand pushes the update to the application sever based, at least in part,upon the assigned priority.
 6. The deployer of claim 5 furthercomprising: a poller to poll a storage location and determine whethermodified application files exist.
 7. The deployer of claim 5 furthercomprising: a signaler to signal the application server when the updateis complete.
 8. A system for enabling updates to applications on arunning application server without requiring a server restart, thesystem comprising: application server means for serving an applicationfor one or more clients; deployer means for coordinating an update tothe application with the application server means, the deployer meansfurther comprising: configuration file means for assigning a priority tothe update and pushing the update to the application sever means based,at least in part, upon the assigned priority.
 9. The system of claim 8further comprising: duplicate application storage means forcommunicating with the deployer means, wherein the update to theapplication is first performed on the duplicate application storagemeans.
 10. A processor readable medium, having processor readable codeembodied thereon, that causes a processor to update an application on anapplication server wherein the update to the application is accomplishedwithout the need for an application server restart, the processorreadable medium comprising: processor readable code for polling astorage location with a deployer to notice the presence of an update,and when an update is noticed; signaling an application server that theupdate is present; processor readable code for determining a priorityfor the update; processor readable code for deciding whether to proceedwith the update based, at least in part on the priority for the update,and if the decision is to proceed; adjusting the application so that theupdate may proceed; processor readable code for implementing the updateto the application; and processor readable code for signaling theapplication server when the update is complete.
 11. The processorreadable medium of claim 10 wherein the processor readable code fordetermining a priority for the update further comprises: processorreadable code for reading the priority assigned to the update by thedeployer, wherein the assigned priority is based, at least in part, upona predetermined configuration.
 12. Deployer means that coordinate anupdate to an application running on an application server, the deployermeans comprising: configuration file means for assigning a priority tothe update and pushing the update to the application sever based, atleast in part, upon the assigned priority.
 13. The deployer means ofclaim 12 further comprising: polling means that polls a storage locationand determines whether modified application files exist.
 14. Thedeployer means of claim 12 further comprising: signaling means forsignaling the application server when the update is complete.